package br.folhapagamento.teste;

import static org.junit.Assert.*;

import java.math.BigDecimal;
import java.sql.Date;

import org.junit.Test;

import br.folhapagamento.negocio.BonusTempoServico;

public class BonusTempoServicoTest {

	private BonusTempoServico bts;
	
	@Test
	public void testRecemContratado() {
		Date dataFechamento = Date.valueOf("2013-05-20");
		Date dataContratacao = Date.valueOf("2013-04-20");
		BigDecimal valorEsperado = new BigDecimal(0);
		bts = new BonusTempoServico(dataFechamento, dataContratacao);
		assertEquals(valorEsperado, bts.valorBTS());
	}

	@Test
	public void testContratado1Ano2Meses() {
		Date dataFechamento = Date.valueOf("2013-05-20");
		Date dataContratacao = Date.valueOf("2013-03-20");
		BigDecimal valorEsperado = new BigDecimal(10);
		bts = new BonusTempoServico(dataFechamento, dataContratacao);
		assertEquals(valorEsperado, bts.valorBTS());
	}

	@Test
	public void testContratado365Dias() {
		Date dataFechamento = Date.valueOf("2013-05-20");
		Date dataContratacao = Date.valueOf("2012-05-20");
		BigDecimal valorEsperado = new BigDecimal(0);
		bts = new BonusTempoServico(dataFechamento, dataContratacao);
		assertEquals(valorEsperado, bts.valorBTS());
	}

	@Test
	public void testContratado366Dias() {
		Date dataFechamento = Date.valueOf("2013-05-20");
		Date dataContratacao = Date.valueOf("2012-05-19");
		BigDecimal valorEsperado = new BigDecimal(0);
		bts = new BonusTempoServico(dataFechamento, dataContratacao);
		assertEquals(valorEsperado, bts.valorBTS());
	}
	
	@Test
	public void testContratado367Dias() {
		Date dataFechamento = Date.valueOf("2013-05-20");
		Date dataContratacao = Date.valueOf("2012-05-18");
		BigDecimal valorEsperado = new BigDecimal(10);
		bts = new BonusTempoServico(dataFechamento, dataContratacao);
		assertEquals(valorEsperado, bts.valorBTS());
	}
	
	@Test
	public void testContratado9anos() {
		Date dataFechamento = Date.valueOf("2013-05-20");
		Date dataContratacao = Date.valueOf("2003-05-18");
		BigDecimal valorEsperado = new BigDecimal(90);
		bts = new BonusTempoServico(dataFechamento, dataContratacao);
		assertEquals(valorEsperado, bts.valorBTS());
	}
	
	@Test
	public void testContratado9anos365Dias() {
		Date dataFechamento = Date.valueOf("2013-05-20");
		Date dataContratacao = Date.valueOf("2003-05-21");
		BigDecimal valorEsperado = new BigDecimal(90);
		bts = new BonusTempoServico(dataFechamento, dataContratacao);
		assertEquals(valorEsperado, bts.valorBTS());
	}
	
	@Test
	public void testContratado9anos366Dias() {
		Date dataFechamento = Date.valueOf("2013-05-20");
		Date dataContratacao = Date.valueOf("2003-05-20");
		BigDecimal valorEsperado = new BigDecimal(90);
		bts = new BonusTempoServico(dataFechamento, dataContratacao);
		assertEquals(valorEsperado, bts.valorBTS());
	}
	
	@Test
	public void testContratado9anos367Dias() {
		Date dataFechamento = Date.valueOf("2013-05-20");
		Date dataContratacao = Date.valueOf("2003-05-19");
		BigDecimal valorEsperado = new BigDecimal(100);
		bts = new BonusTempoServico(dataFechamento, dataContratacao);
		assertEquals(valorEsperado, bts.valorBTS());
	}
	
	@Test
	public void testContratado9anos11Anos() {
		Date dataFechamento = Date.valueOf("2013-05-20");
		Date dataContratacao = Date.valueOf("2001-05-20");
		BigDecimal valorEsperado = new BigDecimal(100);
		bts = new BonusTempoServico(dataFechamento, dataContratacao);
		assertEquals(valorEsperado, bts.valorBTS());
	}	

}
